diff --git a/system/application/config/config.php b/system/application/config/config.php
index bf15525..b0d2bf5 100644
--- a/system/application/config/config.php
+++ b/system/application/config/config.php
@@ -83,6 +83,21 @@
 
 /*
 |--------------------------------------------------------------------------
+| Class Extension Prefix
+|--------------------------------------------------------------------------
+|
+| This item allows you to set the filename/classname prefix when extending
+| native libraries.  For more information please see the user guide:
+| 
+| http://www.codeigniter.com/user_guide/general/core_classes.html
+| http://www.codeigniter.com/user_guide/general/creating_libraries.html
+|
+*/
+$config['subclass_prefix'] = 'MY_';
+
+
+/*
+|--------------------------------------------------------------------------
 | Allowed URL Characters
 |--------------------------------------------------------------------------
 |
@@ -129,20 +144,7 @@
 
 /*
 |--------------------------------------------------------------------------
-| Master Time Reference
-|--------------------------------------------------------------------------
-|
-| Options are "local" or "gmt".  This pref tells the system whether to use 
-| your server's local time as the master "now" reference, or convert it to 
-| GMT.  See the "date helper" page of the user guide for information 
-| regarding date handling.
-|
-*/
-$config['time_reference'] = 'local';
-
-/*
-|--------------------------------------------------------------------------
-| Error Logging Threshold
+| Error Logging
 |--------------------------------------------------------------------------
 |
 | You can enable error logging by setting a threshold over zero. The 
@@ -267,5 +269,18 @@
 */
 $config['compress_output'] = FALSE;
 
+/*
+|--------------------------------------------------------------------------
+| Master Time Reference
+|--------------------------------------------------------------------------
+|
+| Options are "local" or "gmt".  This pref tells the system whether to use 
+| your server's local time as the master "now" reference, or convert it to 
+| GMT.  See the "date helper" page of the user guide for information 
+| regarding date handling.
+|
+*/
+$config['time_reference'] = 'local';
+
 
 ?>
\ No newline at end of file
diff --git a/system/codeigniter/Common.php b/system/codeigniter/Common.php
index 07b468f..a82d486 100644
--- a/system/codeigniter/Common.php
+++ b/system/codeigniter/Common.php
@@ -50,57 +50,27 @@
 	{
 		return $objects[$class];
 	}
-	
-	// This is a special case.  It's a class in the Base5.php file
-	// which we don't need to load.  We only instantiate it.
-	if ($class == 'Instance')
-	{
-		$objects[$class] =& new $class();
-		return $objects[$class];
-	}
-		
+			
 	// If the requested class does not exist in the application/libraries
-	// folder we'll load the native class from the system/libraries folder.
-	
-	$is_subclass = FALSE;	
-	if ( ! file_exists(APPPATH.'libraries/'.$class.EXT))
+	// folder we'll load the native class from the system/libraries folder.	
+	if (file_exists(APPPATH.'libraries/'.config_item('subclass_prefix').$class.EXT))
 	{
-		require(BASEPATH.'libraries/'.$class.EXT);		
+		require(BASEPATH.'libraries/'.$class.EXT);	
+		require(APPPATH.'libraries/'.config_item('subclass_prefix').$class.EXT);
+		$is_subclass = TRUE;	
 	}
 	else
 	{
-		// A core class can either be extended or replaced by putting an
-		// identically named file in the application/libraries folder. 
-		// We need to determine, however, if the class being requested is
-		// a sub-class of an existing library or an independent instance
-		// since each needs to be handled slightly different. 
-		// To do this we'll open the requested class and read the top portion
-		// of it. If the class extends a base class we will load the base first.
-		// If it doesn't extend the base we'll only load the requested class.
-		
-		// Note: I'm not thrilled with this approach since it requires us to
-		// read the top part of the file (I set a character limit of 5000 bytes,
-		// which correlates to roughly the first 100 lines of code), but
-		// I can't think of a better way to allow classes to be extended or
-		// replaced on-the-fly with nothing required for the user to do
-		// except write the declaration.  Fortunately PHP is ridiculously fast
-		// at file reading operations so I'm not able to discern a performance
-		// hit based on my benchmarks, assuming only a small number of core
-		// files are being extended, which will usually be the case.
-		
-		$fp	= fopen(APPPATH.'libraries/'.$class.EXT, "rb");
-		
-		if (preg_match("/MY_".$class."\s+extends\s+CI_".$class."/i", fread($fp, '6000')))
+		if (file_exists(APPPATH.'libraries/'.$class.EXT))
 		{
-			require(BASEPATH.'libraries/'.$class.EXT);	
-			require(APPPATH.'libraries/'.$class.EXT);
-			$is_subclass = TRUE;
+			require(APPPATH.'libraries/'.$class.EXT);	
+			$is_subclass = FALSE;	
 		}
 		else
 		{
-			require(APPPATH.'libraries/'.$class.EXT);
+			require(BASEPATH.'libraries/'.$class.EXT);
+			$is_subclass = FALSE;
 		}
-		fclose($fp);	
 	}
 
 	if ($instantiate == FALSE)
@@ -111,7 +81,7 @@
 		
 	if ($is_subclass == TRUE)
 	{
-		$name = 'MY_'.$class;
+		$name = config_item('subclass_prefix').$class;
 		$objects[$class] =& new $name();
 		return $objects[$class];
 	}
@@ -151,6 +121,30 @@
 	return $main_conf[0];
 }
 
+/**
+* Gets a config item
+*
+* @access	public
+* @return	mixed
+*/
+function &config_item($item)
+{
+	static $config_item = array();
+
+	if ( ! isset($config_item[$item]))
+	{
+		$config =& get_config();
+		
+		if ( ! isset($config[$item]))
+		{
+			return FALSE;
+		}
+		$config_item[$item] = $config[$item];
+	}
+
+	return $config_item[$item];
+}
+
 
 /**
 * Error Handler
diff --git a/system/libraries/Benchmark.php b/system/libraries/Benchmark.php
index c20a542..d426279 100644
--- a/system/libraries/Benchmark.php
+++ b/system/libraries/Benchmark.php
@@ -31,7 +31,6 @@
 
 	var $marker = array();
 
-    
 	// --------------------------------------------------------------------
 
 	/**
diff --git a/system/libraries/Loader.php b/system/libraries/Loader.php
index 3b1a7f2..b313c6d 100644
--- a/system/libraries/Loader.php
+++ b/system/libraries/Loader.php
@@ -655,51 +655,37 @@
 	function _ci_load_class($class, $params = NULL)
 	{	
 		// Prep the class name
-		$class = strtolower(str_replace(EXT, '', $class));
-		
-		// Is this a class extension request?	
-		if (substr($class, 0, 3) == 'my_')
-		{
-			$class = preg_replace("/my_(.+)/", "\\1", $class);
+		$class = ucfirst(strtolower(str_replace(EXT, '', $class)));
 
-			// Load the requested library from the main system/libraries folder
-			if (file_exists(BASEPATH.'libraries/'.ucfirst($class).EXT))
+		// Is this a class extension request?
+		if (file_exists(APPPATH.'libraries/'.config_item('subclass_prefix').$class.EXT))
+		{
+			if ( ! file_exists(BASEPATH.'libraries/'.$class.EXT))
 			{
-				include_once(BASEPATH.'libraries/'.ucfirst($class).EXT);
+				log_message('error', "Unable to load the requested class: ".$class);
+				show_error("Unable to load the requested class: ".$class);
 			}
-			
-			// Now look for a matching library
-			foreach (array(ucfirst($class), $class) as $filename)
-			{
-				if (file_exists(APPPATH.'libraries/'.$filename.EXT))
-				{
-					include_once(APPPATH.'libraries/'.$filename.EXT);	
-				}
-			}
-			
-			return $this->_ci_init_class($filename, 'MY_', $params);
+
+			include_once(BASEPATH.'libraries/'.ucfirst($class).EXT);
+			include_once(APPPATH.'libraries/'.config_item('subclass_prefix').$class.EXT);
+
+			return $this->_ci_init_class($filename, config_item('subclass_prefix'), $params);			
 		}
 
 		// Lets search for the requested library file and load it.
-		// For backward compatibility we'll test for filenames that are
-		// both uppercase and lower.
-		foreach (array(ucfirst($class), $class) as $filename)
+		for ($i = 1; $i < 3; $i++)
 		{
-			for ($i = 1; $i < 3; $i++)
+			$path = ($i % 2) ? APPPATH : BASEPATH;		
+			if (file_exists($path.'libraries/'.$filename.EXT))
 			{
-				$path = ($i % 2) ? APPPATH : BASEPATH;
-			
-				if (file_exists($path.'libraries/'.$filename.EXT))
-				{
-					include_once($path.'libraries/'.$filename.EXT);
-					return $this->_ci_init_class($filename, '', $params);
-				}
+				include_once($path.'libraries/'.$filename.EXT);
+				return $this->_ci_init_class($filename, '', $params);
 			}
 		}
 		
 		// If we got this far we were unable to find the requested class
 		log_message('error', "Unable to load the requested class: ".$class);
-		show_error("Unable to load the class: ".$class);
+		show_error("Unable to load the requested class: ".$class);
 	}
 	
 	// --------------------------------------------------------------------
